home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / doc / errors.doc < prev    next >
Text File  |  1994-02-13  |  21KB  |  721 lines

  1.  
  2.  
  3.                 ERRORS.DOC
  4.  
  5.     ***********************************************************************
  6.     *                                      *
  7.     *                                      *
  8.     *                  DCPP ERROR MESSAGES              *
  9.     *                                      *
  10.     *                                      *
  11.     ***********************************************************************
  12.  
  13.     "#undef: no symbol specified"
  14.  
  15.     You have an #undef directive which specifies no symbol to undef
  16.  
  17.     "maximum number of macro arguments exceeded (256)"
  18.  
  19.     Macros cannot deal with more then 256 arguments (think that's
  20.     enough!)
  21.  
  22.     "Expected comma"
  23.     "Expected ')'"
  24.  
  25.     Generally occurs when parsing macros, a comma or closing paren
  26.     was expected.
  27.  
  28.     "Macro <name>, expected '('"
  29.  
  30.     A macro defined as taking arguments was used without specifying
  31.     those arguments.
  32.  
  33.     "Recursive use of macro <macroname>"
  34.  
  35.     You called a macro recursively, this would lead to an infinite loop
  36.  
  37.     "Macro crosses #include boundry"
  38.  
  39.     A wierd error you should never get
  40.  
  41.     "Replace Soft Error ..."
  42.     "Soft error ..."
  43.  
  44.     Please report immediately!  Software error within dcpp.
  45.  
  46.     "Not enough arguments to macro"
  47.  
  48.     You referenced a macro taking more arguments then you supplied!
  49.  
  50.     "Maximum # of include/macro levels exceeded (32)"
  51.  
  52.     DCPP can handle up to 32 levels of includes and macro nestings
  53.  
  54.     "Size Error <file> (<offset>)"
  55.     "Read Error <file>"
  56.  
  57.     These are errors associated with file access.  "Size Error" in
  58.     particular is more indicative of a possible bug in DCPP
  59.  
  60.     "stringtize '#' valid only before macro argument"
  61.  
  62.     You may only stringtize a macro argument as in:
  63.  
  64.         #define stringof(fubar) #fubar
  65.  
  66.     Attempting to stringtize other tokens is illegal
  67.  
  68.     "#if's left pending over from include after EOF: ..."
  69.  
  70.     One or more #if's was left unclosed (i.e. no matching #endif)
  71.     at the end of a file.  While you can nest #include's in #if's
  72.     you cannot start an #if in an #include and #endif it outside
  73.     that #include.
  74.  
  75.     "Unexpected EOF (unterminated comment)"
  76.  
  77.     A comment was left unterminated when the file EOF occured.
  78.  
  79.     "cpp: unterminated string"
  80.     "cpp: unterminated '"
  81.     "unterminated character constant"
  82.  
  83.     Unterminated string and/or character constants were detected
  84.  
  85.     "syntax error"
  86.     "too many ')'"
  87.     "expression too complex"
  88.  
  89.     These occur during DCPP expression parsing for #if's and are
  90.     indicative an problems in your expression
  91.  
  92.     "directive: unexpected EOF"
  93.  
  94.     An unexpected end-of-file occured while processing a # directive.
  95.  
  96.     "Maximum # of if levels (256)"
  97.  
  98.     You may only have up to 256 levels of #if nesting
  99.  
  100.     "double #else ?"
  101.  
  102.     Occurs when you have an #else without an #if, or something
  103.     like: #if fubar ... #else ... #else ... #endif, which is illegal.
  104.  
  105.     "#endif without associated #if"
  106.  
  107.     Occurs when you have an #endif without a matching #if.
  108.  
  109.     "Expected " or <"
  110.     "Expected " or >"
  111.  
  112.     #include's use "filename" or <filename> delimiting.  Note that
  113.     DCPP does not handle macro expansion in #include statements yet.
  114.  
  115.  
  116.     ***********************************************************************
  117.     *                                      *
  118.     *                                      *
  119.     *                  DC1 ERROR MESSAGES              *
  120.     *                                      *
  121.     *                                      *
  122.     ***********************************************************************
  123.  
  124.     9: "Unexpected EOF"
  125.  
  126.     The source or header file ended abruptly, for example ending in
  127.     the middle of a quoted string.    More stuff was expected.
  128.  
  129.     10: "Char Const Too Large!"
  130.  
  131.     Only 4 characters are allowed within a character constant, more
  132.     than four, such as 'abcde'  (the single quotes are part of the
  133.     example) will generate this error.
  134.  
  135.     11: "NewLine in string constant"
  136.  
  137.     A newline occurs within a string constant, such as the next
  138.     two lines:
  139.  
  140.         "abcd
  141.         efgh"
  142.  
  143.     This is not legal under ANSI C.  Instead, you can create a single
  144.     large string using "string1" "string2" ... two sets of quotes
  145.     strings with no delimiter
  146.  
  147.     12: "Illegal character '%c' $%02x"
  148.  
  149.     Certain characters, such as '#' not part of a preprocessor
  150.     directive, are illegal.  Example:   int x = 43#;
  151.  
  152.     13: "Unexpected Token '%s' expected '%s'"
  153.  
  154.     The expected token wasn't the one we got!  The error message
  155.     tells you what the character was and what was expected.
  156.  
  157.     14: "__geta4 keyword does NOT work with residentable executables!"
  158.  
  159.     __geta4 requires the data base to be at a known absolute
  160.     relocatable location.  You cannot use __geta4 in conjuction
  161.     with -r because residentable code allocates its data segment
  162.     at run time.
  163.  
  164.     15: "More than 32K of auto variables!"
  165.  
  166.     DICE accesses all stack variables using word-register-relative,
  167.     thus no more than 32KBytes worth of stack variables may be
  168.     declared.
  169.  
  170.     16: "struct/union return not supported yet"
  171.  
  172.     This version of DICE does not yet support structural return
  173.     values from procedures.
  174.  
  175.     17: "constant does not fit storage: %d"
  176.  
  177.     DICE will, in some cases, catch the use of constants that are
  178.     out of range in a particular situation... for example, specifying
  179.     the constant '128' in relation to a signed character (-128 to 127).
  180.  
  181.     DICE checks constant-fit only in hazzardous situations.
  182.  
  183.     18: "size mismatch: %d, %d"
  184.  
  185.     This is a code generation error which can occur when you
  186.     compare or run operations on incompatible types.
  187.  
  188.     19: "repeated case: %d (0x%08lx)"
  189.  
  190.     The specified case, given in both decimal and hex, occurs more
  191.     than once within a switch statement.
  192.  
  193.     20: "block operation error in source"
  194.     21: "block operation error in dest"
  195.  
  196.     Generally means that either the source or the destination of
  197.     a block-op, such as a structure assignment, are incompatible.
  198.     For example:
  199.  
  200.         foo = bar;
  201.  
  202.     where foo has a different structure type than bar.  Generally
  203.     this error is preceeded by an "illegal assignment" error.
  204.  
  205.     22: "dest not lvalue"
  206.  
  207.     Generally occurs if the object of an assignment is not assignable.
  208.     However, note that DICE is notably weak in this area... it will
  209.     cheerfully allow you to do things like (a + b) = c + d;, obviously
  210.     illegal.
  211.  
  212.     23: "syntax error in expression"
  213.  
  214.     A General syntax error in an expression occured.  Usually occurs
  215.     due to an illegally constructed expression, such as:  a ] b;
  216.     can also occur due to too few parenthesis.
  217.  
  218.     24: "expected expression"
  219.  
  220.     An expression was expected when, instead, either nothing or a
  221.     statement was found.  This can also occur due to a syntax error
  222.     in the expression.
  223.  
  224.     "expected '}'"
  225.  
  226.     A close brace was expected, for example, a global declaration
  227.     such as:    int a[] = { 1, 2, 3;
  228.  
  229.     "expected %d close parens"
  230.  
  231.     Expected one or more close parenthesis in an expression.
  232.  
  233.     "expected close bracket"
  234.  
  235.     Expected a close bracket ']', generally caused by an incomplete
  236.     array index such as a[i = 4;
  237.  
  238.     "expected identifer after . or ->"
  239.  
  240.     A structure indirection via '.' or '->' requires a structure
  241.     member to be specified.  i.e. a field name.
  242.  
  243.     "expected ',' or ')' in function call"
  244.  
  245.     Expected a delimiter in a function call... either comma if another
  246.     argument is to be given, or a close parenthesis to end the function
  247.     call.
  248.  
  249.     "undefined symbol: %s"
  250.  
  251.     The given symbol is not defined.  For example, referencing a
  252.     variable that was not defined or extern'd.
  253.  
  254.     "expected integer constant"
  255.  
  256.     An integer constant was expected, generally occurs when you
  257.     declare an array.  For example, the following is illegal:
  258.     int i[j];
  259.  
  260.     "not an lvalue"
  261.  
  262.     Occurs when an lvalue was expected, usually in an assignment. An
  263.     lvalue is an expression which exists in real storage, for example:
  264.     *ptr = 4;   ... the expression '*ptr' points to real storage where
  265.     as the expression (a + b) in (a + b) = 4; does NOT.  Note that DICE
  266.     is not very good at catching lvalues errors yet.
  267.  
  268.     "goto label not found"
  269.  
  270.     One or more 'goto label;' statements in a procedure specifies
  271.     a non-existant label.
  272.  
  273.     "constant div/mod by 0"
  274.  
  275.     You attempted to use the '/' or '%' operator with the constant
  276.     value 0 on the right hand side.  Division/Modulus by 0 is illegal.
  277.  
  278.     "ptr-ptr mismatch"
  279.  
  280.     Generally occurs in a pointer comparison or assignment.  The
  281.     two pointers do not point to the same type.  Example,
  282.  
  283.     char *a; long *b; if (a < b);
  284.  
  285.     "unexpected void type"
  286.  
  287.     Occurs due to an illegally constructed expression where the
  288.     result storage is void.
  289.  
  290.     "result not used"
  291.  
  292.     This warning occurs in some cases where an expression has been
  293.     calculated but the result ends up not being used.
  294.  
  295.     "& of array redundant"
  296.  
  297.     Example:    int a[4]; int *b = &a; ... the '&' is redundant
  298.     because accessing an array variable without any index yields
  299.     a pointer to the array anyway.
  300.  
  301.     "& of bitfield illegal"
  302.  
  303.     It is not legal to take the address of a bitfield element in
  304.     a structure since no pointer representation is possible.
  305.  
  306.     "indirection through non-ptr"
  307.  
  308.     int a;    *a = 4; ... i.e. where 'a' wasn't a pointer.  Will also
  309.     occur if you attempt to index a variable which is not an array
  310.     or pointer, i.e. a[4] = 4; where 'a' is an integer instead of an
  311.     array/pointer.
  312.  
  313.     "must #include <alloca.h> for alloca"
  314.  
  315.     DICE requires a special alloca.  To obtain it any modules that use
  316.     alloca() must #include <alloca.h> which redefines it properly.
  317.  
  318.     "lhs not a procedure"
  319.  
  320.     You attempted to make a procedure call, such as foo(23); where
  321.     foo is not a procedure.  Example:  int foo;  foo(23);  This
  322.     can occur if you accidently declare a variable whos name is
  323.     the same as a procedure you attempt to call.
  324.  
  325.     "unprototyped call"
  326.  
  327.     When the -proto option to DCC is used, any procedure call which
  328.     is not prototyped will generate this error.
  329.  
  330.     "too few parameters in call"
  331.     "too many parameters in call"
  332.  
  333.     For prototyped procedures, the number of arguments is generally
  334.     known.    DICE will print these warnings if you make a procedure
  335.     call with too few or too many arguments.
  336.  
  337.     "not structure or union type"
  338.  
  339.     An attempt was made to indirect through a structure or union
  340.     where the lhs (left hand side) was not a structure or union type.
  341.  
  342.     "maximum auto storage for temporaries exceeded"
  343.  
  344.     DICE tracks stack temporaries, mainly for floating point.  If
  345.     DICE's maximum number of temporaries is exceeded due to an
  346.     overly complex expression, this error will be given.
  347.  
  348.     "register not allocated: %d"
  349.  
  350.     This is generally an indication of a software error within DC1
  351.     if not preceeded by other error messages.
  352.  
  353.     "expected integer type"
  354.  
  355.     An integer type was expected but instead a non-integer type was
  356.     found... for example, trying to use a float to index an array.
  357.  
  358.     "illegal ptr arithmatic"
  359.  
  360.     This error generally occurs when you do something illegal with
  361.     a pointer.  For example, while 'ptr - i' is valid, 'i - ptr'
  362.     is not.  While you can subtract two pointers 'p1 - p2', you
  363.     cannot add to pointers 'p1 + p2'.
  364.  
  365.     "illegal ptr conversion"
  366.  
  367.  
  368.  
  369.     "illegal structure conversion"
  370.  
  371.  
  372.  
  373.     "illegal cast"
  374.     "illegal int conversion"
  375.  
  376.     It is illegal to convert an integer to a structure or vise-versa,
  377.     generally the error occurs through an explicit cast.  An illegal
  378.     cast is a catch all for casts that DICE does not understand ...
  379.     things like converting integers into arrays and other nonsense.
  380.  
  381.     "ptr-int conversion"
  382.     "int-ptr conversion"
  383.  
  384.     generally occurs when DICE was forced to convert an integer to
  385.     a pointer or vise-versa, such as making a procedure call and
  386.     passing an integer when the procedure expected a pointer.
  387.  
  388.     "int/ptr mismatch"
  389.  
  390.     Generally occurs when you compare two unlike types (an integer
  391.     and a pointer).
  392.  
  393.     "illegal or incompatible structure operation"
  394.  
  395.     When you assign structures to each other they must be of the same
  396.     type & size.  May also occur if you accidently assign a structure
  397.     to a non-structure or vise-versa.
  398.  
  399.  
  400.     "illegal assignment"
  401.  
  402.     The assignment is illegal.  Usually occurs if you attempt to
  403.     assign a field in a structure in the structure definition,
  404.     like:
  405.  
  406.         struct foo {
  407.         int x = 4;  /* huh ??    */
  408.         };
  409.  
  410.     "illegal ptr-int or int-ptr conversion, int-size != ptr-size"
  411.  
  412.     This is catch-all for programs that convert between pointers and
  413.     integers and vise-versa.  You can only convert an int or long to a
  414.     pointer and back in DICE.  Converting to or from a short is
  415.     illegal.
  416.  
  417.     "illegal bit-field operation"
  418.  
  419.     The bitfield operation is not legal.  Generally occurs when you
  420.     attempt to declare a bitfield not part of a structure or union.
  421.  
  422.     "illegal compare"
  423.  
  424.     Generally occurs when you attempt to compare two structures.
  425.     You can only use == and != when comparing structures.
  426.  
  427.     "undefined structure tag"
  428.  
  429.     Generally occurs when you attempt to reference a field in a
  430.     structure which has yet to be defined.
  431.  
  432.     "undefined struct/union field: %s"
  433.  
  434.     The specified field does not exist in the structure definition.
  435.  
  436.     "ran out of memory"
  437.  
  438.     DICE ran out of memory.  The README file outlines possible steps
  439.     to take ranging from making fewer things resident to specifying
  440.     a temporary directory on your HD instead of in T: (usually
  441.     assigned to RAM:)
  442.  
  443.     "fp constant string too long!"
  444.  
  445.     Hey buddy!  Your floating point constant is too long (> 128 digits).
  446.     DICE can only handle so much.
  447.  
  448.     "fp constant too large to convert to int"
  449.  
  450.     The fp constant is less than -0x80000000 or larger than 0x7FFFFFFF
  451.     and thus cannot be converted to an integer.
  452.  
  453.     "expected semicolon"
  454.  
  455.     A semicolon was expected.  For example:
  456.  
  457.         int a    <--- oops
  458.         int b;
  459.  
  460.     Generally occurs when something unexpected happens, a semicolon is
  461.     not always the correct solution.  For example, can occur if you
  462.     have too many close braces.
  463.  
  464.     "illegal type/storage qualifier for variable"
  465.  
  466.     The type or storage qualifier is illegal for this variable
  467.     declaration.
  468.  
  469.     "illegal typedef"
  470.  
  471.     The typedef is illegal.
  472.  
  473.     "multiply defined procedure"
  474.  
  475.     You have defined a procedure (definition means procedure
  476.     declaration with { ... code ... }) more than once in the same
  477.     source file.
  478.  
  479.     "type too complex"
  480.  
  481.     Occurs if a type is too complex for DICE to handle.  For example,
  482.     DICE cannot deal with an array with 32 dimensions.
  483.  
  484.     "syntax error in declaration"
  485.     "enum identifier overides variable/type"
  486.  
  487.     Occurs if you create an enum identifier that overides an existing
  488.     typedef or variable.
  489.  
  490.     "id missing in procedure declaration"
  491.  
  492.  
  493.  
  494.     "procedure id decl not in id list"
  495.  
  496.     This occurs if you declare a procedure with arguments old style
  497.     and mistakenly declare a variable that wasn't specified in the
  498.     identifier list.
  499.  
  500.     int
  501.     fubar(a,b,c)
  502.     int a, b, c, d;
  503.     {
  504.     }
  505.  
  506.     Note that the variable 'd' did not exist in the id list.
  507.  
  508.     "statement's condition must be an expression"
  509.  
  510.     RETURN, IF, DO and WHILE require an expression or nothing.  The
  511.     middle argument for FOR() requires an expression.  Whatever you
  512.     gave the compiler, it wasn't an expression.
  513.  
  514.     "duplicate default: in switch"
  515.  
  516.     You have more than one default: statement in a switch.
  517.  
  518.     "statements before first case in switch"
  519.  
  520.     Again, strict ANSI says it is ok to have statements before a
  521.     switch though it says nothing as to how they are supposed to
  522.     get executed.
  523.  
  524.             switch(fubar) {
  525.             x = 4;
  526.             case 1:
  527.             ...
  528.             }
  529.  
  530.     But DICE will generate an error.
  531.  
  532.  
  533.     "expected '{' or '}' for procedure def"
  534.  
  535.     Just a more specific error message to the general syntax error.
  536.     There is something wrong with your procedure definition, DICE
  537.     expected an open brace and then the procedure but didn't see
  538.     an open brace.
  539.  
  540.     "case/default outside switch"
  541.  
  542.     with DICE, the case and default statements must be on the same
  543.     semantic level as the switch() { ... } even though ANSI says
  544.     they can be in lower levels.  At least for now.  The other
  545.     common cause is if you really do have a case or default statement
  546.     outside of the switch statement.
  547.  
  548.     "else without if"
  549.  
  550.     You have an ELSE statement not associated with any IF statement.
  551.     The most common mistake is when you accidently put two statements
  552.     in between an IF and an ELSE without using braces, like this:
  553.  
  554.         if (i == 0)
  555.         i = 1; j = 2;    /*  wrong, need braces if more than one stmt */
  556.         else
  557.         i = 3;
  558.  
  559.     Which more commonly occurs if you use #define macros heavily.
  560.  
  561.     ***********************************************************************
  562.     *                                      *
  563.     *                                      *
  564.     *                  DLINK ERROR MESSAGES              *
  565.     *                                      *
  566.     *                                      *
  567.     ***********************************************************************
  568.  
  569.     "Cannot Frag if Resident"
  570.  
  571.     The -frag option may not be used in conjuction with the -r resident
  572.     option, they are mutually exclusive since -r implies all
  573.     non-constant data is A4-relative accessible.
  574.  
  575.     "Couldn't open <filename>"
  576.  
  577.     DLink was unable to open the requested file name
  578.  
  579.     "Bad hunk in <file> <hunkid> at offset <offset_in_file>"
  580.     "Not an object module: <filename> at offset <offset_in_file>"
  581.     "Unknown hunk type <type> in <filename>"
  582.  
  583.     DLink is unable to interpret the hunk type in a library or object
  584.     module
  585.  
  586.     "Couldn't create <filename>"
  587.  
  588.     DLink is unable to create the requested executable file
  589.  
  590.     "Read failed for <filename>"
  591.  
  592.     A read() operation on the specified file has failed
  593.  
  594.     "Warning, hunk has no code, data, or bss <hunkname> in <filename>"
  595.  
  596.     Indicates that a hunk group in an object module or library does
  597.     not contain any code, data, or bss hunks
  598.  
  599.     "COMMON symbol not supported, module <modulename>"
  600.  
  601.     DLink does not support COMMON symbols yet
  602.  
  603.     "Symbol type <type> unknown in <filename>"
  604.  
  605.     A symbol entry in the specified object module or library has a
  606.     type unknown to DLink
  607.  
  608.     "Illegal object format in <filename>"
  609.  
  610.     An object in the file exceeds the size of the file (i.e. corrupt)
  611.  
  612.     "Object format error h>mh"
  613.     "Object format error h!=mh"
  614.  
  615.     A Hunk reference in an object module goes beyond the number of
  616.     hunks in that object module, i.e. access to non-existant hunk.
  617.  
  618.     The second message occurs when the number of hunks counted in pass 2
  619.     does not match the number of hunks counted in pass 1, usually due
  620.     to a corrupt object module
  621.  
  622.     "Soft error, more than one final data"
  623.     "Didn't expect a second BSS after coagulating"
  624.  
  625.     A software error has occured, when -frag is not specified all
  626.     normal data and bss hunks are coagulated together.  This error
  627.     occurs if, after coagulation, there are normal hunks remaining
  628.     that somehow did not get coagulated.
  629.  
  630.     "Data hunk is empty"
  631.  
  632.     This can occur if a link winds up with no data hunks whatsoever.
  633.     You need at least one for the linker to be able to generate
  634.     its special linker symbols (though it can be empty)
  635.  
  636.     "PC-rel offset >+/-32K within a hunk!"
  637.  
  638.     This occurs when you have large object modules which attempt
  639.     to run a pc-relative access whos offset is larger then a
  640.     signed short.  Generally the solution is to compile that
  641.     module -mC (large-code) or specify the object(s) in question
  642.     as being __far
  643.  
  644.     "inter-module PC-rel jump >32K!"
  645.  
  646.     Generally occurs with branch statements that cannot reach their
  647.     desetination with a signed-short
  648.  
  649.     "range error <hunkname> <offset>"
  650.  
  651.     Occurs when an object module contains a relative relocation
  652.     that goes beyond the boundries of the hunk
  653.  
  654.     "out of memory"
  655.  
  656.     Occurs when DLink runs out of memory
  657.  
  658.     "size error <generated>/<calculated>"
  659.     "reloc array size mismatch <actual>/<calculated>"
  660.     "reloc_copy error, array too small <actual>/<calculated>"
  661.  
  662.     These are software errors -- a sanity check DLink makes with
  663.     itself has failed
  664.  
  665.     "Error, cannot have data-data relocations if resident"
  666.  
  667.     DICE's resident support is handled by the main compiler, DC1, which
  668.     will generate static data that never contains 32 bit data-data
  669.     relocations (instead generating run-time code to handle such
  670.     relocations).  If any 32 bit data-data relocations exist, DLink
  671.     cannot make a program residentable.
  672.  
  673.     "32 bit reloc hunk ... to hunk ..."
  674.  
  675.     When you use the -pi option for position independant code linking,
  676.     DLink will complain if there are any absolute code relocations in
  677.     the link.
  678.  
  679.     "No relocation info allowed for BSS data!"
  680.  
  681.     BSS is exactly that... BSS, zero'd.  You cannot have relocations
  682.     that modify BSS space (you can, of course, have data relocations
  683.     that *reference* BSS space).
  684.  
  685.     "Relocation beyond end of hunk"
  686.  
  687.     The object module is corrupt, a relocation was requested that
  688.     goes beyond the initialized data or code in a hunk
  689.  
  690.     "PC-Relative access to type <type> label"
  691.  
  692.     You may only make pc-relative accesses to normal type 1 symbols
  693.  
  694.     "Absolute references to BSS space variables are Illegal"
  695.     "Absolute References to DATA space variables are Illegal"
  696.  
  697.     This error message occurs for -r or -pi linking (resident or
  698.     position independant code).  Since BSS and DATA addresses are
  699.     not known until run-time, no absolute references to BSS/DATA
  700.     are allowed.
  701.  
  702.     "Error, PC rel reloc <file>:<hunk> to <file>:<hunk>"
  703.  
  704.     You cannot make PC relative references between hunks that do
  705.     not wind up coagulated since they are not contiguous in memory.
  706.  
  707.     "Illegal A4-ref to far object: <where_object_defined> from <where A4-ref occurs>
  708.  
  709.     It is illegal to make small-data accesses to objects declared as
  710.     __far or compiled with -mD ... this can occur, for example, if you
  711.     compile a module -mD and declare a library base variable, say,
  712.     IntuitionBase, which is then referenced by the OpenScreen() tag
  713.     as small-data due to the use of the small-data amiga.lib
  714.  
  715.     The solution is to either not compile the module __far or to leave
  716.     the -mD option in and declare IntuitionBase as __near, as in:
  717.  
  718.     __near long IntuitionBase;
  719.  
  720.  
  721.